/**
 * Copyright (C), 2001-2031, www.bosssof.com.cn
 * FileName: Enum.java
 * Author: YuXingZh
 * Date: 16/5/2024 上午10:42
 * Description:
 * <p>
 * History:
 * Date          Author   Version  Desc
 * 2024-01-01    bosssoft  1.0.0   initialize this file
 */
package org.boss.exception;

/**
 * 文件格式异常类，用于处理XML或JSON文件格式错误的情况。
 *
 * @className: FileFormatException
 * @description: 自定义异常类，用于封装XML或JSON文件格式不正确时的错误信息。
 * 解决什么问题：
 *  当解析XML或JSON文件时，可能会遇到格式错误，导致解析失败。此类允许捕获并明确指示文件格式问题，
 *  从而方便开发者进行针对性的错误处理和调试。
 * 主要方法：
 *  构造方法1: 使用错误信息创建异常实例，适用于具体错误信息已知的情况。
 *  构造方法2: 使用错误信息和另一个异常的原因创建异常实例，适用于异常是由另一个异常引起的情况。
 * 注意事项：
 *  该异常类应在解析XML或JSON文件时遇到格式错误时使用，以提供清晰的错误指示。
 *  例如：在文件解析服务中，如果遇到格式错误，应该捕获并重新抛出为FileFormatException。
 * @author: zhuchen
 * @date: 2024年05月15日 17:00
 * @since 1.0
 */

public class FileFormatException extends Exception {
    private final BizCodeEnum errorCode;

    /**
     * 使用指定错误信息构造一个新的异常。
     *
     * @param message 异常发生时的描述信息，比如指出文件名和具体的错误信息
     */
    public FileFormatException(String message,BizCodeEnum errorCode) {

        super(message);
        this.errorCode = errorCode;
    }

    /**
     * 使用指定错误信息和原因构造一个新的异常。
     * 原因通常是指导致文件格式异常的底层异常，比如解析错误。
     *
     * @param message 异常发生时的描述信息
     * @param cause   异常发生的原因，通常是另一个导致文件格式异常的异常
     */
    public FileFormatException(String message, BizCodeEnum errorCode, Throwable cause) {

        super(message, cause);
        this.errorCode = errorCode;
    }

    public BizCodeEnum getErrorCode() {
        return errorCode;
    }
}